Professor: Otto Tavares
Aluno: Hugo Silva
Escolha uma base de dados para realizar esse projeto. Essa base de dados será utilizada durante toda sua análise. Essa base necessita ter 4 (ou mais) variáveis de interesse. Caso você tenha dificuldade para escolher uma base, o professor da disciplina irá designar para você.
Explique qual o motivo para a escolha dessa base e explique os resultados esperados através da análise.
Carregue a base para o RStudio e comprove o carregamento tirando um print da tela com a base escolhida presente na área “Ambiente”/Enviroment. Detalhe como você realizou o carregamento dos dados.
library(tidyverse)
data <- read_csv("caminho/para/o/arquivo.csv")
Instale e carregue os pacotes de R necessários para sua análise (mostre o código necessário):
install.package("tidyverse")library(tidyverse)install.package("ggplot2")library(ggplot2)install.package("summarytools")library(summarytools)install.package("stringi")Escolha outros pacotes necessários, aponte sua necessidade e instale e carregue (mostrando o código necessário).
knitr
rmarkdown
install.package("knitr")
install.package("rmarkdown")library(htmlwidgets)
library(ggplot2)
library(plotly)
library(tidyverse)
library(summarytools)
library(knitr)
library(kableExtra)Aplique uma função em R que seja útil para sua análise e mostre.
group_bydata <- read.csv2("base/BaseDPEvolucaoMensalCisp.csv")
data <- data %>%
select(
`mes`,
`ano`,
`Regiao`,
`hom_doloso`,
`lesao_corp_morte`,
`latrocinio`,
`letalidade_violenta`,
`tentat_hom`,
`hom_culposo`
)
data$Regiao <- trimws(data$Regiao)
data$mes_ano <- as.Date(paste(data$ano, data$mes, "01", sep = "-"))
data <- data %>% select(-mes, -ano)
data_gruped_by <- data %>%
group_by(Regiao, mes_ano) %>%
summarise(across(c(
hom_culposo,
hom_doloso,
latrocinio,
lesao_corp_morte,
letalidade_violenta,
tentat_hom
), sum), .groups = "drop")Escolha uma variável de seu banco de dados e calcule:
media <- mean(data_gruped_by$hom_culposo)
desvio_padrao <- sd(data_gruped_by$hom_culposo)
quantile_25_hom_culposo <- quantile(data_gruped_by$hom_culposo, 0.25)
quantile_75_hom_culposo <- quantile(data_gruped_by$hom_culposo, 0.75)Utilizando o pacote summarytools (função descr), descreva estatisticamente a sua base de dados.
description <- descr(data_gruped_by)
kable(description, "html") %>% kable_styling()
|
hom_culposo |
hom_doloso |
latrocinio |
lesao_corp_morte |
letalidade_violenta |
tentat_hom |
|
|---|---|---|---|---|---|---|
|
Mean |
47.1729167 |
104.0135417 |
3.4437500 |
0.9052083 |
129.8458333 |
98.1322917 |
|
Std.Dev |
26.0855114 |
50.6255223 |
2.9200259 |
1.1635649 |
64.1592062 |
51.7825746 |
|
Min |
6.0000000 |
10.0000000 |
0.0000000 |
0.0000000 |
21.0000000 |
11.0000000 |
|
Q1 |
25.0000000 |
63.0000000 |
1.0000000 |
0.0000000 |
81.0000000 |
51.0000000 |
|
Median |
43.0000000 |
102.0000000 |
3.0000000 |
1.0000000 |
124.0000000 |
99.0000000 |
|
Q3 |
65.5000000 |
134.5000000 |
5.0000000 |
1.0000000 |
162.5000000 |
133.0000000 |
|
Max |
130.0000000 |
260.0000000 |
22.0000000 |
7.0000000 |
350.0000000 |
271.0000000 |
|
MAD |
28.1694000 |
50.4084000 |
2.9652000 |
1.4826000 |
60.7866000 |
57.8214000 |
|
IQR |
40.2500000 |
71.2500000 |
4.0000000 |
1.0000000 |
81.2500000 |
82.0000000 |
|
CV |
0.5529764 |
0.4867205 |
0.8479204 |
1.2854111 |
0.4941183 |
0.5276813 |
|
Skewness |
0.5974504 |
0.4809548 |
1.4458524 |
1.5612083 |
0.8003405 |
0.3355137 |
|
SE.Skewness |
0.0789338 |
0.0789338 |
0.0789338 |
0.0789338 |
0.0789338 |
0.0789338 |
|
Kurtosis |
-0.5071850 |
-0.1135275 |
3.1521977 |
2.5965597 |
0.4938802 |
-0.4780521 |
|
N.Valid |
960.0000000 |
960.0000000 |
960.0000000 |
960.0000000 |
960.0000000 |
960.0000000 |
|
Pct.Valid |
100.0000000 |
100.0000000 |
100.0000000 |
100.0000000 |
100.0000000 |
100.0000000 |
Escolha uma variável e crie um histograma. Justifique o número de bins usados. A distribuição dessa variável se aproxima de uma “normal”? Justifique.
hist(
data_gruped_by$hom_culposo,
main = "Histograma com curva de suavidade",
breaks = "FD",
freq = FALSE
)
lines(density(data_gruped_by$hom_culposo))
bins <- ceiling(
2 * IQR(data_gruped_by$hom_culposo) / (
length(data_gruped_by$hom_culposo)^(1 / 3)
)
)
bins
Esse número de bins foi usado pois foi observado que valores maioress acabavam trazendo mais distorção para o histograma, ou seja, as barras do gráfico ficavam mais distantes da curva suavisada. A regra utilizada para o número de bins foi a de Diaconis
qqnorm(data_gruped_by$hom_culposo, main = "Normal Q-Q Homicidio Culposo")
qqline(data_gruped_by$hom_culposo)
Calcule a correlação entre todas as variáveis dessa base. Quais são as 3 pares de variáveis mais correlacionadas?
cor():correlacao <- cor(data_gruped_by %>% select(-mes_ano, -Regiao))
kable(correlacao, "html") %>% kable_styling()
|
hom_culposo |
hom_doloso |
latrocinio |
lesao_corp_morte |
letalidade_violenta |
tentat_hom |
|
|---|---|---|---|---|---|---|
|
hom_culposo |
1.0000000 |
0.4003722 |
0.2467896 |
0.2414043 |
0.3366624 |
0.5290556 |
|
hom_doloso |
0.4003722 |
1.0000000 |
0.5685335 |
0.3418643 |
0.9570283 |
0.5383409 |
|
latrocinio |
0.2467896 |
0.5685335 |
1.0000000 |
0.3263571 |
0.6316448 |
0.4100123 |
|
lesao_corp_morte |
0.2414043 |
0.3418643 |
0.3263571 |
1.0000000 |
0.4118019 |
0.3345683 |
|
letalidade_violenta |
0.3366624 |
0.9570283 |
0.6316448 |
0.4118019 |
1.0000000 |
0.5511579 |
|
tentat_hom |
0.5290556 |
0.5383409 |
0.4100123 |
0.3345683 |
0.5511579 |
1.0000000 |
É possivel observar que os 3 pares de maior correlação são:
Crie um scatterplot entre duas variáveis das resposta anterior. Qual a relação da imagem com a correlação entre as variáveis.
dispersao <- ggplot(
data_gruped_by, aes(x = hom_doloso, y = letalidade_violenta)
)
dispersao + geom_point(size = 3, color = "red") +
labs(
x = "Homicídio Doloso",
y = "Letalidade Violenta",
title = "Gráfico de dispersão"
) + geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'
É possível observar pela imagem que há uma tendência de relação entre as
variáveis indicando, por exemplo, que os homicidios dolosos costumam ser
violêntos
Crie um gráfico linha de duas das variáveis. Acrescente uma legenda e rótulos nos eixos.
plot_ly() %>%
add_lines(x = data_gruped_by$mes_ano, y = data_gruped_by$hom_culposo, name = "Homicidio Culposo") %>%
add_lines(x = data_gruped_by$mes_ano, y = data_gruped_by$letalidade_violenta, name = "Letalidade Violenta") %>%
layout(xaxis = list(title = "Mês-Ano"), yaxis = list(title = "Número de Ocorrências"), title = "Número de casos de Letalidade Violenta e Homicidios Culposos por mês no estado do Rio de Janeiro")
Trabalho pode ser acompanhado em: GitHub Pages.
Acesse: GitHub para mais informações.